/**
 * 
 */
package br.com.ctm.guiamedico.dao.api;

import java.util.List;

import javax.ejb.Local;
import javax.persistence.PersistenceException;

import br.com.ctm.guiamedico.model.Medico;
import br.com.ctm.guiamedico.model.Versao;
import br.com.framework.persistencia.api.BaseDao;

/**
 * @author Cleber
 *
 */
@Local
public interface MedicoDao extends BaseDao<Medico> {

	/**
	 * Retorna a quantidade de {@link Medico} incluidos na {@link Versao} especificada.
	 * 
	 * @param numeroVersao
	 * @return
	 * @throws PersistenceException
	 */
	public Long getCountMedicosIncluidosNaVersao(Long numeroVersao) throws PersistenceException;
	
	/**
	 * Retorna um {@link List} de {@link Medico} incluidos na {@link Versao} especificada, de forma paginada.
	 * 
	 * @param numeroVersao
	 * @param firstResult
	 * @param maxResults
	 * @return
	 * @throws PersistenceException
	 */
	public List<Medico> getMedicosIncluidosNaVersao(Long numeroVersao, int firstResult, int maxResults) throws PersistenceException;
	
	
	/**
	 * Retorna  a quantidade de {@link Medico} removidos na {@link Versao} especificada.
	 * 
	 * @param numeroVersao
	 * @return
	 * @throws PersistenceException
	 */
	public Long getCountMedicosRemovidosNaVersao(Long numeroVersao) throws PersistenceException;
	
	/**
	 * Retorna um {@link List} de {@link Medico} removidos na {@link Versao} especificada, de forma paginada.
	 *  
	 * @param numeroVersao
	 * @param firstResult
	 * @param maxResults
	 * @return
	 * @throws PersistenceException
	 */
	public List<Medico> getMedicosRemovidosNaVersao(Long numeroVersao, int firstResult, int maxResults) throws PersistenceException;
	
}
